#include "powerProc.h"
#include <cm_backtrace.h>
#include "module_config.h"

int8_t power_ctrl(en_PowerSwitch power,uint8_t on)
{
//   switch(power)
//   {
//     case ECU_POWER_ON_MCU_EN:
//         POWER_BATTERY_ON_WRITE(on);
//         break;

//     case ECU_3V3_SUBG_EN:
//         POWER_SUBG_WRITE(on);
//         break;
// #ifndef WL_PROJECT_COOPER
//     case ECU_5V0_PERIPHERAL_EN:
//         POWER_PERIPHERAL_5V0_EN_WRITE(on);
//         break;
// #endif
//     case ECU_POWER_CPU_EN:
//         POWER_CPU_EN_WRITE(on);
//         break;

//     case ECU_VCU_PWR_EN:
//         POWER_VCU_WRITE(on);
//         break;

//     case ECU_MOTOR_DRIVER_PWR_EN:
//         MOVE_POWER_WRITE(on);
//         break;

//     case ECU_VCU_5V0_EN:
//         MOVE_MOTOR_5V_WRITE(on);
//         break;

//     case ECU_DIS_5V0_EN:
//         DISPLAY_PWR_WRITE(on);
//         break;
// #ifndef WL_PROJECT_COOPER
//     case ECU_24V_PLAYLOAD_EN:
//         EXTERNAL_POWER_ENABLE(on);
//         break;
// #endif
//     default:
//         return -1;
//   }
  return 0;
}

uint8_t power_ctrl_status(en_PowerSwitch power)
{
  uint8_t value = 0;
//   switch(power)
//   {
//     case ECU_POWER_ON_MCU_EN:
//         value = POWER_BATTERY_ON_READ();
//         break;

//     case ECU_3V3_SUBG_EN:
//         value = POWER_SUBG_READ();
//         break;
// #ifndef WL_PROJECT_COOPER
//     case ECU_5V0_PERIPHERAL_EN:
//         value = POWER_PERIPHERAL_5V0_EN_READ();
//         break;
// #endif
//     case ECU_POWER_CPU_EN:
//         value = POWER_CPU_EN_READ();
//         break;

//     case ECU_VCU_PWR_EN:
//         value = POWER_VCU_READ();
//         break;

//     case ECU_MOTOR_DRIVER_PWR_EN:
//         value = MOVE_POWER_READ();
//         break;

//     case ECU_VCU_5V0_EN:
//         value = MOVE_MOTOR_5V_READ();
//         break;

//     case ECU_DIS_5V0_EN:
//         value = DISPLAY_PWR_READ();
//         break;
// #ifndef WL_PROJECT_COOPER
//     case ECU_24V_PLAYLOAD_EN:
//         value = EXTERNAL_POWER_STATE();
//         break;
// #endif
//     default:
//         return -1;
//   }
  return value;
}

/**
  * @brief  write path data from flash
  * @param  void
  * @retval 0 : success
  * @retval -1 : error
  */
void lowPowerProtect(void)
{
    // static uint8_t lowpoweCount = 0;

    // if(bmsGetChargeState() != 0)
    //     return ;

    // if((bmsGetLowpowerState() != 0)&&(cpuInterface.cpuState.bootState==1))
    // {
    //     lowpoweCount++; 
    //     //bat_v below 18000 more than 5s
    // #ifndef SAFETY_TEST_VERSION
    //     if(lowpoweCount > 100)
    // #else
    //     if(lowpoweCount > 20)
    // #endif // SAFETY_TEST_VERSION
    //     {
    //         // lowpoweCount = 0;
    //         LOG_TS(AM_LOG_LEVEL_WARNING, "LP", "batVoltage is low %d,%d. power off force\n", bmsGetData()->board_v, bmsGetData()->bat_data.Stack_Voltage);
    //         g_power_down_flag = 3;
    //     }
    // }
    // else 
    // {
    //     lowpoweCount = 0;
    // }
}